Keras Tuner দিয়ে Hyperparameter Optimization

Machine Learning - কেরাস (Keras) - Hyperparameter Tuning এবং Optimization
234

Hyperparameter optimization (বা hyperparameter tuning) হল একটি গুরুত্বপূর্ণ প্রক্রিয়া যেখানে মডেলের প্রশিক্ষণ প্রক্রিয়ার জন্য সবচেয়ে ভাল হাইপারপ্যারামিটার সেট নির্বাচন করা হয়। Keras Tuner একটি অত্যন্ত শক্তিশালী এবং সহজ ব্যবহারের লাইব্রেরি যা Keras মডেলগুলির জন্য hyperparameter tuning করতে ব্যবহৃত হয়। এর মাধ্যমে আপনি মডেল আর্কিটেকচারের বিভিন্ন অংশের জন্য সেরা হাইপারপ্যারামিটার খুঁজে পেতে পারেন, যেমন লেয়ার সংখ্যা, ইউনিট সংখ্যা, একটিভেশন ফাংশন, লার্নিং রেট, ব্যাচ সাইজ, ইত্যাদি।

Keras Tuner এর মাধ্যমে, আপনি সহজেই মডেলটির হাইপারপ্যারামিটার পরিবর্তন করে সেরা পারফরম্যান্স পেতে পারেন, যা আপনাকে মডেলকে আরও দক্ষ এবং কার্যকরী করতে সাহায্য করে।


Keras Tuner ইনস্টলেশন

প্রথমে Keras Tuner ইনস্টল করা দরকার। আপনি pip ব্যবহার করে এটি ইনস্টল করতে পারেন:

pip install keras-tuner

Keras Tuner এর মাধ্যমে Hyperparameter Optimization

Keras Tuner দিয়ে hyperparameter optimization করার জন্য কয়েকটি গুরুত্বপূর্ণ কৌশল রয়েছে, যেমন Random Search, Bayesian Optimization, এবং Hyperband। তবে শুরুতে Random Search দিয়ে বুঝিয়ে দেব, যেটি Keras Tuner এর মধ্যে সবচেয়ে সাধারণ এবং সহজ পদ্ধতি।


১. Hyperparameter Tuning এর জন্য Keras Tuner ব্যবহার

১.১ মডেল তৈরি এবং হাইপারপ্যারামিটার নির্ধারণ

এখানে আমরা একটি সিম্পল Keras মডেল তৈরি করব এবং কিছু হাইপারপ্যারামিটার সেট করব, যেমন লেয়ার সংখ্যা, ইউনিট সংখ্যা, একটিভেশন ফাংশন এবং লার্নিং রেট।

import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
from tensorflow.keras.optimizers import Adam
import keras_tuner as kt

# Keras Tuner এর জন্য মডেল ফাংশন তৈরি করা
def build_model(hp):
    model = Sequential()
    
    # হাইপারপ্যারামিটার দিয়ে লেয়ার সংখ্যা এবং ইউনিট সংখ্যা নির্বাচন
    model.add(Dense(units=hp.Int('units', min_value=32, max_value=128, step=32),
                    activation='relu',
                    input_shape=(X_train.shape[1],)))

    # দ্বিতীয় হিডেন লেয়ার
    model.add(Dense(units=hp.Int('units_2', min_value=32, max_value=128, step=32),
                    activation='relu'))
    
    # আউটপুট লেয়ার
    model.add(Dense(1, activation='sigmoid'))

    # অপটিমাইজার এবং লার্নিং রেট
    model.compile(optimizer=Adam(learning_rate=hp.Float('learning_rate', min_value=1e-4, max_value=1e-2, sampling='LOG')),
                  loss='binary_crossentropy',
                  metrics=['accuracy'])
    
    return model

এখানে:

  • units এবং units_2 লেয়ারগুলোর সংখ্যা নির্ধারণ করা হচ্ছে।
  • learning_rate লার্নিং রেটের জন্য একটি হাইপারপ্যারামিটার নির্ধারণ করা হচ্ছে যা log scale এ ভ্যালু স্যাম্পল করবে।

১.২ Keras Tuner দিয়ে Search Space তৈরি করা

কোন হাইপারপ্যারামিটারগুলো আপনি টিউন করতে চান, তা Keras Tuner এর মধ্যে search space হিসাবে নির্বাচন করা হয়। এটি করতে HyperParameters ক্লাস ব্যবহার করতে হয়।

# Keras Tuner এর জন্য Search Space তৈরি
tuner = kt.RandomSearch(build_model,
                        objective='val_accuracy',  # লক্ষ্য ফাংশন
                        max_trials=5,               # সর্বাধিক ট্রায়াল সংখ্যা
                        executions_per_trial=3,     # প্রতি ট্রায়ালে এক্সিকিউশন সংখ্যা
                        directory='my_dir',         # ডিরেক্টরি যেখানে ট্রায়ালের ফলাফল সেভ হবে
                        project_name='hyperparam_tuning')

এখানে:

  • RandomSearch পদ্ধতি ব্যবহার করা হচ্ছে, যেখানে max_trials দ্বারা কতটি ভিন্ন হাইপারপ্যারামিটার সেট চেষ্টা করা হবে তা নির্ধারণ করা হয়।
  • objective হল যে মেট্রিক অনুযায়ী হাইপারপ্যারামিটার টিউন হবে (এখানে val_accuracy)।

১.৩ মডেল ফিটিং এবং Tuning চালানো

টিউনিং প্রক্রিয়া চালানোর জন্য মডেলকে ফিট করতে হবে। এর পর, Keras Tuner স্বয়ংক্রিয়ভাবে বিভিন্ন হাইপারপ্যারামিটার কম্বিনেশন পরীক্ষা করবে।

tuner.search(X_train, y_train, epochs=10, validation_data=(X_val, y_val))

এখানে:

  • X_train এবং y_train হল ট্রেনিং ডেটা।
  • epochs=10: মডেলটি কতবার প্রশিক্ষণ করা হবে তা নির্ধারণ।
  • validation_data: ভ্যালিডেশন ডেটা যেখানে মডেল তার কার্যকারিতা মূল্যায়ন করবে।

১.৪ সেরা হাইপারপ্যারামিটার নির্বাচন

প্রসেস শেষ হওয়ার পর, Keras Tuner সেরা হাইপারপ্যারামিটার সেট নির্বাচন করবে:

best_hyperparameters = tuner.oracle.get_best_trials(num_trials=1)[0].hyperparameters
print(best_hyperparameters.values)

এখানে:

  • get_best_trials(num_trials=1) সেরা ট্রায়াল নির্বাচন করবে।

২. Hyperband এবং Bayesian Optimization

Keras Tuner এ Hyperband এবং Bayesian Optimization দুটি শক্তিশালী পদ্ধতি রয়েছে, যা মডেলটিকে দ্রুততম সময়ে সেরা হাইপারপ্যারামিটার সেট নির্বাচন করতে সহায়তা করে।

২.১ Hyperband

Hyperband হল একটি অত্যন্ত দ্রুত পদ্ধতি যা অধিক ট্রায়াল এবং হাইপারপ্যারামিটার স্পেসের মধ্যে সমানভাবে সময় বণ্টন করে। এটি কৌশলগতভাবে কাস্টমাইজ করা যায় এবং দ্রুত ফলাফল প্রদান করে।

tuner = kt.Hyperband(build_model,
                     objective='val_accuracy',
                     max_epochs=10,
                     factor=3,
                     directory='my_dir',
                     project_name='hyperband')

২.২ Bayesian Optimization

Bayesian Optimization একটি আরও উন্নত পদ্ধতি, যা হাইপারপ্যারামিটার স্পেসের মধ্যে একটি প্রোবাবিলিস্টিক মডেল তৈরি করে এবং কাস্টমাইজেশন করতে সক্ষম।

tuner = kt.BayesianOptimization(build_model,
                                objective='val_accuracy',
                                max_trials=5,
                                directory='my_dir',
                                project_name='bayesian_opt')

সারাংশ

Keras Tuner হাইপারপ্যারামিটার টিউনিংয়ের জন্য একটি শক্তিশালী এবং সহজ পদ্ধতি প্রদান করে যা মডেলের পারফরম্যান্স উন্নত করতে সহায়তা করে। এটি RandomSearch, Hyperband, এবং Bayesian Optimization এর মাধ্যমে আপনাকে সেরা হাইপারপ্যারামিটার খুঁজে পেতে সাহায্য করে। Keras Tuner ব্যবহার করে আপনি ডীপ লার্নিং মডেলগুলির জন্য হাইপারপ্যারামিটার টিউনিং দ্রুত ও দক্ষতার সাথে করতে পারেন, যা মডেলের কর্মক্ষমতা ব্যাপকভাবে বৃদ্ধি করে।

Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...